'\" t
.TH cm2_intro 1 "4 June 2013" "Code Manager II"

.SH NAME
cm2 \- Generic command interface to Code Manager II (cm2)

.SH SYNOPSIS
.TS
l l.
cm2 info	[\fB--verbose\fP] [\fB--long\fP] [\fB--versions\fP \fIA[,..]\fP] [\fB--xml\fP] file ...
.TE

.SH DESCRIPTION
The \fIcm2(1)\fP utility provides a single command to interface to all the underlying
commands that make up the complete Code Manager II (CM2) toolkit. Developers are encouraged
to use this command in preference to the underlying commands since some UNIX environments
currently have name clashes [for example \fIstatus(1)\fP is already a standard command
name in certain Linux configurations].

If the command is run without arguments a summary of all supported sub-commands will
be shown. Each command can consist of one or more words - and aliases or alternatives
are also supported.

.SH INTRODUCTION TO CM2
CM2 is a source code control and release control tool-set. It aims to be as simple as possible
whilst providing a set of features to meet the demands of most modestly sized developments.
It works on two different levels; versioning of individual files and also a concept of
\'projects' - a collection of a group of files that make of a development of a code base that
can be packaged.

In summary some of the features that CM2 offers are:

.TP 4
.B *
Simple to use! This was the fundamental design requirement. Only limited features need to
be used to perform effective version control of files and whole groups of files.
.TP
.B *
Project Based - the utility works on two different levels of version control - on individual
files and also on a whole collection of directories that make up a project.
.TP
.B *
Integrated Package tools - facilities exist to take tags of projects and generate 
packages suitable for several popular package management systems to deploy.
.TP
.B *
Strict and Lazy Modes - two operating modes are available which determine the
behaviour of various utilities in the tool-set. The strict mode places more restrictions
on the development process which might be better for certain environments!
.TP
.B *
Intra-project tools - facilities exist to easily compare different tags (releases) of the
same project, or even the same (or different) releases across different projects. Similarly
tools exist to migrate code between projects, copy whole projects and merge changes between
projects.
.TP
.B *

.RE

.SH DEPENDENCIES
The utilities are written in Perl, though some modules must be present for them to 
function correctly. Most modules required are typically installed with Perl by 
default though some are not, most likely including the following:

.TP 12
Compress::Zlib
Utility to provde Gzip-style compression.
.TP
DBI
Database interface - required for SQLite3 access.
.TP
Diff::LibXDiff
Efficient differencing algorithm - working with binary files too.
.TP
Digest::SHA1
Used for generation of unique version checksums.
.TP
MIME::Base64
Encoding of binary data for versioning storage.
.TP
Time::HiRes
High resolution timing.
.TP
Text::Diff
Two way differening algorithm.
.TP
Text::Diff3
Three way differencing and merging algorithm.
.TP
Text::Patch
Patch generation and application.

.SH ARGUMENTS
The arguments supported by each of the sub-commands must be given after the sub-command. 
Typically entering the following should produce a short help message for the command in
question.

.TS
l.
cm2 commandname -?
.TE

.SH EXIT CODES
All \fIcm2(1)\fP commands will issue a return code of 0 for success, or 1 or more
for an error. In must cases additional error text will be written to standard error
if a fatal error occurs. 

If a warning occurs [but no errors] the return code of the command will be 0 for success.

.SH NOTES
CM2 supports three different back-end repository versions - "1", "2" or "3" (oddly enough). The first version
does not support binary files on all architectures and requires RCS binaries to be 
available in the current PATH. Version 2 is preferred - it uses SQLite to store data, and
efficiently handles binary files. Further version 2 is much faster for most operations.

.SH AUTHOR
The \fBCode Manager II\fP tool set was written by Simon Edwards, Proprius Consulting Ltd, (\fBwww.advantsys.co.uk\fP).

.SH SEE ALSO
.BR cm2_admin(1),
.BR cm2_checkin(1),
.BR cm2_cmpprojects(1),
.BR cm2_cmpreleases(1),
.BR cm2_info(1),
.BR cm2_listreleases(1),
.BR cm2_mci(1),
.BR cm2_mco(1),
.BR cm2_mdiff(1),
.BR cm2_mget(1),
.BR cm2_munlock(1),
.BR cm2_prarchive(1),
.BR cm2_rollback(1),
.BR cm2_status(1),
.BR cm2_tagrelease(1),
.BR cm2_tagremove(1),
.BR cm2_updated(1),
.BR cm2_viewconfig(1).

.SH AVAILABILITY
This utility was specifically written under the GNU GPL license and as required
by such software comes with \fIno warranty or guarantee of any kind\fP.

